Computer-based interactive speech applications are widely used in telephone systems to answer incoming calls as well as to perform various tasks including gathering information from callers, providing information to callers, and connecting callers with appropriate parties. Typically, the call flow is activated when the system receives an incoming call, and begins with a system-generated greeting followed by a list of available options. The application waits for a response from the caller and processes the response when received. The application must be able to recognize what the caller said to determine what should happen next. It does this by converting the user's speech into a text sentence of distinct words (speech recognition), breaking down the recognized sentence grammatically and then systematically representing its meaning (language understanding), obtaining targeted data based on that meaning's representation from an appropriate online source (information retrieval), building a text sentence that presents the retrieved data in the user's preferred language (language generation), and converting that text sentence into computer-generated speech (speech synthesis).
Typically, interactive speech applications today are “single-threaded.” If a user accesses an interactive speech-activated system to receive information, he would select one of the available options, complete the process and then return to the main menu to select a second option, if desired. If a user abandons the process before completion, the navigation through the system so far is lost and the user must start again at the top of the call flow. It would be helpful if a user were able to select an option, go partway through the call flow, decide to access another thread before proceeding with the first thread, suspend the first thread, select a second thread, and thereafter be able to return to the first thread at the point he left it. Hence a need exists for a multi-contextual speech application that overcomes the drawbacks of the prior art.